# cat << ►_◄ > /dev/null
# (‑●‑●)> released under the WTFPL v2 license, by Gregory Pakosz (@gpakosz)

# -- set prefix-------------------------------------------------------------------
set -g prefix C-a
unbind C-b

# -- general -------------------------------------------------------------------

set -g default-terminal "screen-256color" # colors!
setw -g xterm-keys on
set -s escape-time 0                      # fastest command sequences
set -sg repeat-time 600                   # increase repeat timeout
set -s quiet on                           # disable various messages

set -g prefix2 C-a                        # GNU-Screen compatible prefix
bind C-a send-prefix -2

set -g history-limit 5000                 # boost history

# edit configuration
bind e new-window -n '~/.tmux.conf.local' "sh -c '\${EDITOR:-vim} ~/.tmux.conf.local && tmux source ~/.tmux.conf && tmux display \"~/.tmux.conf sourced\"'"

# reload configuration
bind r source-file ~/.tmux.conf \; display '~/.tmux.conf sourced'

# see https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
if 'which -s reattach-to-user-namespace' 'set -g default-command "exec initializing... 2> /dev/null & reattach-to-user-namespace $SHELL -l"'


# -- display -------------------------------------------------------------------

set -g base-index 1         # start windows numbering at 1
setw -g pane-base-index 1   # make pane numbering consistent with windows

setw -g automatic-rename on # rename window to reflect current program
# renumber windows when a window is closed
set -g renumber-windows on

set -g set-titles on                        # set terminal title
set -g set-titles-string '#h ❐ #S ● #I #W'

set -g display-panes-time 800 # slightly longer pane indicators display time
set -g display-time 1000      # slightly longer status messages display time

set -g status-interval 10     # redraw status line every 10 seconds

# 24 hour clock
setw -g clock-mode-style 24

# clear both screen and history
bind -n C-l send-keys C-l \; run 'tmux clear-history'

# activity
set -g monitor-activity on
set -g visual-activity off


# -- navigation ----------------------------------------------------------------

# find session
bind C-f command-prompt -p find-session 'switch-client -t %%'

# pane navigation
bind -r h select-pane -L  # move left
bind -r j select-pane -D  # move down
bind -r k select-pane -U  # move up
bind -r l select-pane -R  # move right
bind > swap-pane -D       # swap current pane with the next one
bind < swap-pane -U       # swap current pane with the previous one

# maximize current pane
bind + run 'cut -c3- ~/.tmux.conf | sh -s maximize_pane'

# pane resizing
bind -r H resize-pane -L 2
bind -r J resize-pane -D 2
bind -r K resize-pane -U 2
bind -r L resize-pane -R 2

# window navigation
unbind n
unbind p
bind -r C-h previous-window # select previous window
bind -r C-l next-window     # select next window
bind Tab last-window        # move to last active window

# toggle mouse
bind m run "cut -c3- ~/.tmux.conf | sh -s toggle_mouse"


# -- urlview -------------------------------------------------------------------

bind U run "cut -c3- ~/.tmux.conf | sh -s urlview #{pane_id}"


# -- facebook pathpicker -------------------------------------------------------

bind F run "cut -c3- ~/.tmux.conf | sh -s fpp #{pane_id}"


# -- list choice ---------------------------------------------------------------

bind -t vi-choice h tree-collapse
bind -t vi-choice l tree-expand
run -b 'tmux bind -t vi-choice K start-of-list 2> /dev/null'
run -b 'tmux bind -t vi-choice J end-of-list 2> /dev/null'
bind -t vi-choice H tree-collapse-all
bind -t vi-choice L tree-expand-all
bind -t vi-choice Escape cancel


# -- edit mode -----------------------------------------------------------------

# the following vi-copy bindings match my vim settings
#   see https://github.com/gpakosz/.vim.git
bind -ct vi-edit H start-of-line
bind -ct vi-edit L end-of-line
bind -ct vi-edit q cancel
bind -ct vi-edit Escape cancel


# -- copy mode -----------------------------------------------------------------

set-window-option -g mode-keys vi
#bind Enter copy-mode # enter copy mode #bind b list-buffers  # list paster buffers
#bind p paste-buffer  # paste from the top pate buffer
#bind P choose-buffer # choose which buffer to paste from
#
## the following vi-copy bindings match my vim settings
##   see https://github.com/gpakosz/.vim.git
#bind -t vi-copy v begin-selection
#bind -t vi-copy C-v rectangle-toggle
#bind -t vi-copy y copy-selection
#bind -t vi-copy Escape cancel
#bind -t vi-copy H start-of-line
#bind -t vi-copy L end-of-line

# copy to Mac OSX pasteboard
if -b 'which -s reattach-to-user-namespace' 'bind y run "tmux save-buffer - | reattach-to-user-namespace pbcopy"'


# -- user defined --------------------------------------------------------------

if '[ -f ~/.tmux.conf.local ]' 'source ~/.tmux.conf.local'


# -- 8< ------------------------------------------------------------------------

run 'cut -c3- ~/.tmux.conf | sh -s apply_configuration'


# ►_◄
#
# # exit the script if any statement returns a non-true return value
# set -e
#
# apply_theme() {
#   tmux_conf_theme=${tmux_conf_theme:-default}
#   case "${tmux_conf_theme}" in
#     powerline|powerline_patched_font)
#       left_separator=''
#       left_separator_black=''
#       right_separator=''
#       right_separator_black=''
#       session_symbol=''
#       ;;
#     ""|default)
#       left_separator='|'
#       left_separator_black=''
#       right_separator='|'
#       right_separator_black=''
#       ;;
#   esac
#
#   case "$tmux_conf_theme" in
#     ""|default|powerline)
#
#       # panes
#       tmux_conf_theme_pane_border_fg=${tmux_conf_theme_pane_border_fg:-colour238}               # light gray
#       tmux_conf_theme_pane_active_border_fg=${tmux_conf_theme_pane_active_border_fg:-colour39}  # light blue
#
#       tmux set -g pane-border-style fg=$tmux_conf_theme_pane_border_fg \; set -g pane-active-border-style fg=$tmux_conf_theme_pane_active_border_fg
#       #uncomment for fat borders
#       #tmux set -ga pane-border-style bg=$tmux_conf_theme_pane_border_fg \; set -ga pane-active-border-style bg=$tmux_conf_theme_pane_active_border_fg
#
#       tmux_conf_theme_display_panes_active_colour=${tmux_conf_theme_display_panes_active_colour:-colour39}  # light blue
#       tmux_conf_theme_display_panes_colour=${tmux_conf_theme_display_panes_colour:-colour39}                # light blue
#       tmux set -g display-panes-active-colour $tmux_conf_theme_display_panes_active_colour \; set -g display-panes-colour $tmux_conf_theme_display_panes_colour
#
#       tmux_conf_theme_highlight_focused_pane=${tmux_conf_theme_highlight_focused_pane:-disabled}
#       tmux_conf_theme_focused_pane_fg=${tmux_conf_theme_focused_pane_fg:-default}   # default
#       tmux_conf_theme_focused_pane_bg=${tmux_conf_theme_focused_pane_bg:-colour23}  # dark blue/green
#       highlight_focused_pane_enabled=$( ([ x"$tmux_conf_theme_highlight_focused_pane" = x"enabled" ] || [ -z "$tmux_conf_theme_highlight_focused_pane" ]) && echo "true" || echo "false" )
#       if [ x"$highlight_focused_pane_enabled" = x"true" ] ; then
#         tmux setw -g window-active-style "fg=$tmux_conf_theme_focused_pane_fg,bg=$tmux_conf_theme_focused_pane_bg"
#       else
#         tmux setw -g window-active-style default
#       fi
#
#       # messages
#       tmux_conf_theme_message_fg=${tmux_conf_theme_message_fg:-colour16}  # black
#       tmux_conf_theme_message_bg=${tmux_conf_theme_message_bg:-colour226} # yellow
#       tmux_conf_theme_message_attr=${tmux_conf_theme_message_attr:-bold}
#       tmux set -g message-style fg=$tmux_conf_theme_message_fg,bg=$tmux_conf_theme_message_bg,$tmux_conf_theme_message_attr
#
#       tmux_conf_theme_message_command_fg=${tmux_conf_theme_message_command_fg:-colour16}   # black
#       tmux_conf_theme_message_command_bg=${tmux_conf_theme_message_command_bg:-colour160}  # light yellow
#       tmux set -g message-command-style fg=$tmux_conf_theme_message_command_fg,bg=$tmux_conf_theme_message_command_bg,$tmux_conf_theme_message_attr
#
#       # windows mode
#       tmux_conf_theme_mode_fg=${tmux_conf_theme_mode_fg:-colour16}  # black
#       tmux_conf_theme_mode_bg=${tmux_conf_theme_mode_bg:-colour226} # yellow
#       tmux_conf_theme_mode_attr=${tmux_conf_theme_mode_attr:-bold}
#       tmux setw -g mode-style fg=$tmux_conf_theme_mode_fg,bg=$tmux_conf_theme_mode_bg,$tmux_conf_theme_mode_attr
#
#       # status line
#       tmux_conf_theme_status_fg=${tmux_conf_theme_status_fg:-colour253} # white
#       tmux_conf_theme_status_bg=${tmux_conf_theme_status_bg:-colour232} # dark gray
#       tmux set -g status-style fg=$tmux_conf_theme_status_fg,bg=$tmux_conf_theme_status_bg
#
#       tmux_conf_theme_session_fg=${tmux_conf_theme_session_fg:-colour16}  # black
#       tmux_conf_theme_session_bg=${tmux_conf_theme_session_bg:-colour226} # yellow
#       status_left="#[fg=$tmux_conf_theme_session_fg,bg=$tmux_conf_theme_session_bg,bold] ❐ #S #[fg=$tmux_conf_theme_session_bg,bg=$tmux_conf_theme_status_bg,nobold]$left_separator_black"
#       if [ x"`tmux -q -L tmux_theme_status_left_test -f /dev/null new-session -d \; show -g -v status-left \; kill-session`" = x"[#S] " ] ; then
#         status_left="$status_left "
#       fi
#       tmux set -g status-left-length 32 \; set -g status-left "$status_left"
#
#       tmux_conf_theme_window_status_fg=${tmux_conf_theme_window_status_fg:-colour245} # light gray
#       tmux_conf_theme_window_status_bg=${tmux_conf_theme_window_status_bg:-colour232} # dark gray
#       window_status_format="#I #W"
#       tmux setw -g window-status-style fg=$tmux_conf_theme_window_status_fg,bg=$tmux_conf_theme_window_status_bg \; setw -g window-status-format "$window_status_format"
#
#       tmux_conf_theme_window_status_current_fg=${tmux_conf_theme_window_status_current_fg:-colour16} # black
#       tmux_conf_theme_window_status_current_bg=${tmux_conf_theme_window_status_current_bg:-colour39} # light blue
#       window_status_current_format="#[fg=$tmux_conf_theme_window_status_bg,bg=$tmux_conf_theme_window_status_current_bg]$left_separator_black#[fg=$tmux_conf_theme_window_status_current_fg,bg=$tmux_conf_theme_window_status_current_bg,bold] #I $left_separator #W #[fg=$tmux_conf_theme_window_status_current_bg,bg=$tmux_conf_theme_status_bg,nobold]$left_separator_black"
#       tmux setw -g window-status-current-format "$window_status_current_format"
#       tmux set -g status-justify left
#
#       tmux_conf_theme_window_status_activity_fg=${tmux_conf_theme_window_status_activity_fg:-default}
#       tmux_conf_theme_window_status_activity_bg=${tmux_conf_theme_window_status_activity_bg:-default}
#       tmux_conf_theme_window_status_activity_attr=${tmux_conf_theme_window_status_activity_attr:-underscore}
#       tmux setw -g window-status-activity-style fg=$tmux_conf_theme_window_status_activity_fg,bg=$tmux_conf_theme_window_status_activity_bg,$tmux_conf_theme_window_status_activity_attr
#
#       tmux_conf_theme_window_status_bell_fg=${tmux_conf_theme_window_status_bell_fg:-colour226} # yellow
#       tmux_conf_theme_window_status_bell_bg=${tmux_conf_theme_window_status_bell_bg:-default}
#       tmux_conf_theme_window_status_bell_attr=${tmux_conf_theme_window_status_bell_attr:-blink,bold}
#       tmux setw -g window-status-bell-style fg=$tmux_conf_theme_window_status_bell_fg,bg=$tmux_conf_theme_window_status_bell_bg,$tmux_conf_theme_window_status_bell_attr
#
#       window_status_last_fg=colour39 # light blue
#       window_status_last_attr=default
#       tmux setw -g window-status-last-style $window_status_last_attr,fg=$window_status_last_fg
#
#       tmux_conf_theme_prefix=${tmux_conf_theme_prefix:-disabled}
#       tmux_conf_theme_battery=${tmux_conf_theme_battery:-enabled}
#       tmux_conf_theme_time=${tmux_conf_theme_time:-enabled}
#       tmux_conf_theme_date=${tmux_conf_theme_date:-enabled}
#       tmux_conf_theme_username=${tmux_conf_theme_username:-enabled}
#       tmux_conf_theme_hostname=${tmux_conf_theme_hostname:-enabled}
#
#       prefix_enabled=$( ([ x"$tmux_conf_theme_prefix" = x"enabled" ] || [ -z "$tmux_conf_theme_prefix" ]) && echo "true" || echo "false" )
#       battery_enabled=$( ([ x"$tmux_conf_theme_battery" = x"enabled" ] || [ -z "$tmux_conf_theme_battery" ]) && echo "true" || echo "false" )
#       time_enabled=$( ([ x"$tmux_conf_theme_time" = x"enabled" ] || [ -z "$tmux_conf_theme_time" ]) && echo "true" || echo "false" )
#       date_enabled=$( ([ x"$tmux_conf_theme_date" = x"enabled" ] || [ -z "$tmux_conf_theme_date" ]) && echo "true" || echo "false" )
#       username_enabled=$( ([ x"$tmux_conf_theme_username" = x"enabled" ] || [ -z "$tmux_conf_theme_username" ] || ([ x"$tmux_conf_theme_username" = x"ssh" ] && ([ -n "$SSH_CLIENT" ] || [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_TTY" ]))) && echo "true" || echo "false" )
#       hostname_enabled=$( ([ x"$tmux_conf_theme_hostname" = x"enabled" ] || [ -z "$tmux_conf_theme_hostname" ] || ([ x"$tmux_conf_theme_hostname" = x"ssh" ] && ([ -n "$SSH_CLIENT" ] || [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_TTY" ]))) && echo "true" || echo "false" )
#
#       tmux_conf_theme_prefix_fg=${tmux_conf_theme_prefix_fg:-colour253}       # white
#       tmux_conf_theme_prefix_bg=${tmux_conf_theme_prefix_bg:-colour16}        # black
#       tmux_conf_theme_time_date_fg=${tmux_conf_theme_time_date_fg:-colour247} # light gray
#       tmux_conf_theme_time_date_bg=${tmux_conf_theme_time_date_bg:-colour232} # dark gray
#       tmux_conf_theme_username_fg=colour254                                   # white
#       tmux_conf_theme_username_bg=colour160                                   # red
#       tmux_conf_theme_hostname_fg=colour16                                    # black
#       tmux_conf_theme_hostname_bg=colour254                                   # white
#
#       if [ x"$prefix_enabled" = x"true" ] ; then
#         status_right_prefix="#{?client_prefix,#[fg=$tmux_conf_theme_prefix_fg]#[bg=$tmux_conf_theme_prefix_bg]#[bold]⌨ #[fg=$tmux_conf_theme_prefix_fg]#[bg=$tmux_conf_theme_status_bg]#[nobold],}"
#       fi
#       if [ x"$battery_enabled" = x"true" ] ; then
#         status_right_battery="${tmux_conf_battery:-#(cut -c3- ~/.tmux.conf | sh -s battery ${tmux_conf_battery_style:-bar} ${tmux_conf_battery_symbol:-block} ${tmux_conf_battery_symbol_count:-auto} \"${tmux_conf_battery_palette:-colour160,colour254,colour16}\" ${tmux_conf_battery_status:-enabled})} "
#         has_battery=$(eval echo \$${status_right_battery#\#})
#         if [ -n "$has_battery" ] && ([ x"$time_enabled" = x"true" ] || [ x"$date_enabled" = x"true" ]) ; then
#           status_right_battery="${status_right_battery}#[fg=$tmux_conf_theme_time_date_fg,nobold]$right_separator"
#         fi
#       fi
#       if [ x"$time_enabled" = x"true" ] ; then
#         status_right_time="#[fg=$tmux_conf_theme_time_date_fg,nobold]${status_right_time} %R "
#         if [ x"$date_enabled" = x"true" ] ; then
#           status_right_time="${status_right_time}#[fg=$tmux_conf_theme_time_date_fg,nobold]$right_separator"
#         fi
#       fi
#       if [ x"$date_enabled" = x"true" ] ; then
#         status_right_date="#[fg=$tmux_conf_theme_time_date_fg,nobold] %d %b "
#       fi
#       if [ x"$username_enabled" = x"true" ] ; then
#         status_right_username="#[fg=$tmux_conf_theme_username_bg,bg=$tmux_conf_theme_time_date_bg,nobold]$right_separator_black#[fg=$tmux_conf_theme_username_fg,bg=$tmux_conf_theme_username_bg,nobold] #(whoami) "
#       fi
#       if [ x"$hostname_enabled" = x"true" ] ; then
#         if [ x"$username_enabled" = x"true" ] ; then
#           status_right_hostname="#[bg=$tmux_conf_theme_username_bg]"
#         else
#           status_right_hostname="#[bg=$tmux_conf_theme_time-data_bg]"
#         fi
#         status_right_hostname="#[fg=$tmux_conf_theme_hostname_bg,nobold]${status_right_hostname}$right_separator_black#[fg=$tmux_conf_theme_hostname_fg,bg=$tmux_conf_theme_hostname_bg,bold] #h "
#       fi
#
#       status_right="${status_right_prefix}${status_right_battery}${status_right_time}${status_right_date}${status_right_username}${status_right_hostname}"
#       tmux set -g status-right-length 64 \; set -g status-right "$status_right"
#
#       # clock
#       clock_mode_colour=colour39  # light blue
#       tmux setw -g clock-mode-colour $clock_mode_colour
#       ;;
#   esac
# }
#
# circled_digit() {
#   circled_digits='⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'
#   if [ $1 -lt 20 ] 2>/dev/null ; then
#     echo ${circled_digits:$1:1}
#   else
#     echo $1
#   fi
# }
#
# maximize_pane() {
#   tmux -q -L swap-pane-test -f /dev/null new-session -d \; new-window \; new-window \; swap-pane -t :1 \; kill-session || { tmux display 'your tmux version has a buggy swap-pane command - see ticket #108, fixed in upstream commit 78e783e'; exit; }
#   __current_pane=$(tmux display -p '#{pane_id}')
#
#   __dead_panes=$(tmux list-panes -s -F '#{pane_dead} #{pane_id} #{pane_start_command}' | grep -o '^1 %.\+maximized.\+$' || true)
#   __restore=$(echo "${__dead_panes}" | sed -n -E -e "s/^1 ${__current_pane} .+maximized.+(%[0-9]+)$/tmux swap-pane -s \1 -t ${__current_pane} \; kill-pane -t ${__current_pane}/p" -e "s/^1 (%[0-9]+) .+maximized.+${__current_pane}$/tmux swap-pane -s \1 -t ${__current_pane} \; kill-pane -t \1/p" )
#
#   if [ x"${__restore}" = x ] ; then
#     [ x"$(tmux list-panes | wc -l | sed 's/^ *//g')" = x1 ] && tmux display "Can't maximize with only one pane" && return
#     __window=$(tmux new-window -P "exec maximized...& tmux setw remain-on-exit on; clear; tmux clear-history; printf 'Pane has been maximized, press <prefix>+ to restore. %s' \\${__current_pane};")
#     __window=${__window%.*}
#
#     __guard=50
#     while ( [ x"$(tmux list-panes -t ${__window} -F '#{session_name}:#{window_index} #{pane_dead}')" != x"${__window} "1 ] && [ x"${__guard}" != x0 ] ) ; do sleep 0.01 ; __guard=$((__guard - 1)); done
#     if [ x"${__guard}" = 0 ] ; then
#       exit 1
#     fi
#
#     __new_pane=$(tmux display -p '#{pane_id}')
#     tmux setw remain-on-exit off \; swap-pane -s "${__current_pane}" -t "${__new_pane}"
#   else
#     ${__restore} || tmux kill-pane
#   fi
# }
#
# toggle_mouse() {
#   if (tmux show -g -w |grep -q mode-mouse); then
#     old=$(tmux show -g -w | grep mode-mouse | cut -d' ' -f2)
#     new=""
#
#     if [ "$old" = "on" ] ; then
#       new="off"
#     else
#       new="on"
#     fi
#
#     tmux set -g mode-mouse $new \;\
#          set -g mouse-resize-pane $new \;\
#          set -g mouse-select-pane $new \;\
#          set -g mouse-select-window $new \;\
#          display "mouse: $new"
#   else
#     old=$(tmux show -g | grep mouse | head -n 1 | cut -d' ' -f2)
#     new=""
#
#     if [ "$old" = "on" ] ; then
#       new="off"
#     else
#       new="on"
#     fi
#
#     tmux set -g mouse $new \;\
#          display "mouse: $new"
#   fi
# }
#
# battery() {
#   uname_s=$(uname -s)
#   if [ x"$uname_s" = x"Darwin" ]; then
#     batt=$(pmset -g batt)
#     percentage=$(echo $batt |egrep -o [0-9]+%) || return
#     discharging=$(echo $batt | grep -qi "discharging" && echo "true" || echo "false")
#     charge="${percentage%%%} / 100"
#   elif [ x"$uname_s" = x"Linux" ]; then
#     batpath=/sys/class/power_supply/BAT0
#     if [ ! -d $batpath ]; then
#       batpath=/sys/class/power_supply/BAT1
#     fi
#     discharging=$(grep -qi "discharging" $batpath/status && echo "true" || echo "false")
#     bat_capacity=$batpath/capacity
#     bat_energy_full=$batpath/energy_full
#     bat_energy_now=$batpath/energy_now
#     if [ -r "$bat_capacity" ] ; then
#       charge="$(cat $bat_capacity) / 100"
#     else
#       if [ ! -r "$bat_energy_full" -o ! -r "$bat_energy_now" ]; then
#         return
#       fi
#       charge="$(cat $bat_energy_now) / $(cat $bat_energy_full)" || return
#     fi
#   elif [ x"${uname_s:0:6}" = x"CYGWIN" ]; then
#     wmic path Win32_Battery 2>&1 | grep -q 'No Instance' && return
#     discharging=$(wmic path Win32_Battery Get BatteryStatus 2>/dev/null | grep -q 1 && echo "true" || echo "false")
#     percentage=$(wmic path Win32_Battery Get EstimatedChargeRemaining /format:list 2>/dev/null | grep '[^[:blank:]]' | cut -d= -f2)
#     charge="${percentage} / 100"
#   else
#     return
#   fi
#
#   battery_style=$1
#   battery_symbol=$2
#   battery_symbol_count=$3
#   battery_palette=$4
#   battery_status=$5
#   if [ x"$battery_symbol_count" = x"auto" ]; then
#     columns=$(tmux -q display -p '#{client_width}' 2> /dev/null || echo 80)
#     if [ $columns -ge 80 ]; then
#       battery_symbol_count=10
#     else
#       battery_symbol_count=5
#     fi
#   fi
#   battery_symbol_heart_full=♥
#   battery_symbol_heart_empty=♥
#   battery_symbol_block_full=◼
#   battery_symbol_block_empty=◻
#   eval battery_symbol_full='$battery_symbol_'"$battery_symbol"'_full'
#   eval battery_symbol_empty='$battery_symbol_'"$battery_symbol"'_empty'
#
#   if [ x"$battery_status" = x"1" ] || [ x"$battery_status" = x"true" ] || [ x"$battery_status" = x"enabled" ] ; then
#     if [ x"$discharging" = x"true" ]; then
#       echo "$uname_s" | grep -q -v "CYGWIN" && printf "%s " 🔋
#     else
#       printf "%s " ⚡
#     fi
#   fi
#
#   if [ x"$battery_style" = x"percentage" ] ; then
#     printf %.0f%% $(awk "BEGIN{print $charge * 100}")
#     return
#   fi
#
#   if echo $battery_palette | grep -q -E '^heat|gradient(,[a-z0-9]{7,9})?$'; then
#     palette_style=$(echo $battery_palette | cut -d, -f1)
#     battery_bg=$(echo $battery_palette | cut -s -d, -f2)
#     battery_bg=${battery_bg:-colour16}
#     gradient="196 202 208 214 220 226 190 154 118 82 46"
#     heat="233 234 235 237 239 241 243 245 247 144 143 142 184 214 208 202 196"
#     eval palette=$(echo \$$palette_style)
#     count=$(echo $(echo $palette | wc -w))
#
#     eval set -- "$palette"
#     palette=$(eval echo $(eval echo $(printf "\\$\{\$(expr %s \* $count / $battery_symbol_count)\} " $(seq 1 $battery_symbol_count))))
#
#     full=$(printf %.0f $(awk "BEGIN{print $charge * $battery_symbol_count}"))
#     printf '#[bg=%s]' $battery_bg
#     [ $full -gt 0 ] && \
#       printf "#[fg=colour%s]$battery_symbol_full" $(echo $palette | cut -d' ' -f1-$full)
#     empty=$(($battery_symbol_count - $full))
#     if [ x"$battery_symbol" = x"heart" ]; then
#       [ $empty -gt 0 ] && \
#         printf '#[fg=%s]' $battery_bg && \
#         printf "%0.s$battery_symbol_empty" $(seq 1 $empty)
#     else
#       [ $empty -gt 0 ] && \
#         printf "#[fg=colour%s]$battery_symbol_empty" $(echo $palette | cut -d' ' -f$((full+1))-$(($full + $empty)))
#     fi
#   elif echo $battery_palette | grep -q -E '^([#a-z0-9]{7,9},?){3}$'; then
#     battery_full_fg=$(echo $battery_palette | cut -d, -f1)
#     battery_empty_fg=$(echo $battery_palette | cut -d, -f2)
#     battery_bg=$(echo $battery_palette | cut -d, -f3)
#
#     full=$(printf %.0f $(awk "BEGIN{print $charge * $battery_symbol_count}"))
#     [ $full -gt 0 ] && \
#       printf '#[fg=%s,bg=%s]' $battery_full_fg $battery_bg && \
#       printf "%0.s$battery_symbol_full" $(seq 1 $full)
#     empty=$(($battery_symbol_count - $full))
#     [ $empty -gt 0 ] && \
#       printf '#[fg=%s,bg=%s]' $battery_empty_fg $battery_bg && \
#       printf "%0.s$battery_symbol_empty" $(seq 1 $empty)
#   fi
# }
#
# apply_configurable_bindings() {
#   tmux_conf_new_windows_retain_current_path=${tmux_conf_new_windows_retain_current_path:-false}
#   if [ x"$tmux_conf_new_windows_retain_current_path" = x"true" ] || [ x"$tmux_conf_new_windows_retain_current_path" = x"1" ] ; then
#     tmux bind c new-window -c '#{pane_current_path}'
#   else
#     tmux bind c new-window
#   fi
#
#   tmux_conf_new_panes_retain_current_path=${tmux_conf_new_panes_retain_current_path:-true}
#   if [ x"$tmux_conf_new_panes_retain_current_path" = x"true" ] || [ x"$tmux_conf_new_panes_retain_current_path" = x"1" ] ; then
#     tmux  bind '"' split-window -v -c "#{pane_current_path}"  \;\
#           bind % split-window -h -c "#{pane_current_path}"    \;\
#           bind - split-window -v -c "#{pane_current_path}"    \;\
#           bind _ split-window -h -c "#{pane_current_path}"
#   else
#     tmux  bind '"' split-window -v  \;\
#           bind % split-window -h    \;\
#           bind - split-window -v    \;\
#           bind _ split-window -h
#   fi
#
#   tmux_conf_new_session_prompt=${tmux_conf_new_session_prompt:-false}
#   if [ x"$tmux_conf_new_session_prompt" = x"true" ] || [ x"$tmux_conf_new_session_prompt" = x"1" ] ; then
#     tmux bind C-c command-prompt -p new-session 'new-session -s %%'
#   else
#     tmux bind C-c new-session
#   fi
# }
#
# apply_configuration() {
#  apply_theme
#  apply_configurable_bindings
#  for name in $(printenv | grep -Eo ^tmux_conf_[^=]+); do tmux setenv -gu $name; done;
# }
#
# urlview() {
#   tmux capture-pane -J -S - -E - -b urlview-$1 -t $1
#   tmux split-window "tmux show-buffer -b urlview-$1 | urlview || true; tmux delete-buffer -b urlview-$1"
# }
#
# fpp() {
#   tmux capture-pane -J -S - -E - -b fpp-$1 -t $1
#   tmux split-window "tmux show-buffer -b fpp-$1 | fpp || true; tmux delete-buffer -b fpp-$1"
# }
#
# $@
